Personal computers (PCs) serve a multitude of software applications, features and functions. The applications provide the user with tools to accomplish tasks, such as, but not limited to, document processing, spreadsheet management, email exchanges and Internet browsing. The features and functions are commonly referred to as “personalized information” and may comprise favorite Internet websites, contacts, Internet cookies, digital signatures, background images, desktop icons, application control bars, choice of default values and other configurable settings. In general, the personalized information differs from one user to another.
Typically, software applications are installed and setup using an automated installation process. The installation process is designed to enable the integration of the new functionality to the operating system, as well as ensuring that the application can be removed. Still, even though an installation process is mostly carried-out by automatic installation programs, installation, removal and setup of software applications remain a tedious task requiring as much as hours of work.
Generally, an automatic installation program performs the following activities: a) copying application software files from a removable storage (e.g., a compact disk) to the destination computer; b) configuring the operating system's parameters by, for example, the configuration of the system registry files; c) creating the application icons; and d) deleting temporary installation files.
Typically modern operating systems, such as Microsoft® XP® or Microsoft Vista® include a registry file for storing operating system user and application settings and options, dynamic link libraries (DLLs) which contains shared code, and named objects for naming functions shared by different processes. This structure of an operating system causes most of the challenges associated with application installation, most notable of which are:
1. Operating system Stability and Performance: Installations permanently modify the operating system (even after uninstalling) resulting in an incremental decline in operating system performance due to uninstalled leftovers (orphan files), inflated registry files, and so on.
2. Conflicts: Installations cause application conflicts due to various incompatibilities and resource sharing issues.
3. Rigidness: Applications are installed into the operating system in a way that prevents the applications from being “detached” and migrated between different computers; applications are executed exclusively within the environment in which they were initially installed.
4. Security: When applications and the operating system are fused together, internal cross contamination is almost inevitable.
These problems have resulted in information technology (IT) departments expending substantial wasted time, money and manpower on application lifecycle tasks, regression/compatibility tests, deployment and management, help desk and support issues, and more.
Virtualization technology allows delivering configured virtual applications to PCs and to run such applications inside an isolated virtual environment having its own virtual file system and virtual registry. That is, a running virtual application will not conflict or impact other virtual applications that may coexist in the virtual environment. However, a virtual application may conflict or impact installed (non-virtual) applications or the operating system of a PC.
Traditionally, to generate virtual application files (or packages), system administrators execute a wizard that monitors and records interactions between a non-virtual application and an operating system during the application installation and execution. The wizard typically analyzes which operating system components the application uses or depends upon. Using this information, a virtual application package for an application is created. Thereafter, the created application is tested to determine if there are any conflicts with any operating system and any applications that are physically installed. An example for such a wizard is the Microsoft Application Virtualization Sequencer.
In order to ensure proper execution of virtual applications, the wizard must be executed on a “clean machine,” i.e., a computer or server that does not include any software components required for the execution of the generated virtual application. For example, if a virtual application is created on a machine that includes a DLL file that the application uses during its execution, the generated virtual application package will not include this DLL file. Thus, the generated virtual application cannot be executed on a different machine on which the DLL file is not installed. Furthermore, a virtual application generated for example using the wizard discussed above, can be executed only on machines having the same operating system version as the machine on which the virtual application was created. For example, if the virtual application is created on a machine running Microsoft XP® then this application cannot be executed on a machine with Microsoft Vista®.
Therefore, it would be advantageous to provide an efficient solution for generating virtual applications.